package zdori;

public class J29_BaseClass {

	/**
	 * @param args
	 * 기본 클래스 base class
	 * 일부 인터페이스가 많은 추상 메서드를 가지고 있는경우 이것을 구현하는 클래스는
	 * 이 모든 메서드 ABCDE를 재정의 해야함
	 * 하지만 실제 사용하는 메서드가 C라면 
	 * 불필요한 메서드 ABDE를 재정의 하는것은
	 * 이것은 지루한 작업이 될 수 있음
	 * 
	 * 이런 경우 구현 클래스를 일반 클래스로 확장하여 수정하기를 원하는 메서드만 재정의 함 이러한 용도로 사용하는 클래스를 base class 라 한다
	 * 
	 * 아래에서는 badinterface 를 구현한 badclass 를 확장하여 goodclass1/2 를 만듦
	 * 
	 * 자바 웹 프로그래밍에서 서블렛 클래스를 만들때 servlet이라는
	 * 5개의 추상메서드를 포함한 인터페이스를 사용함
	 * 이런경우 다 사용하지 않음에도 불구하고 5개의 추상메서드에 대한 구현 코드를 모두 작성 이에대한 해결책으로
	 * GenericSerclet 이라는 클래스를 확장하면 단하나의 메서드 service 메서드만 재정의 해서 사용하면 된
	 * 여기서 GenericServlet는 baseclass임
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
interface BadInterface{
	void a();
	char b();
	int c();
	String d();
	boolean e();
	
}
class Badclass implements BadInterface{
	
	@Override
	public void a() {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public char b() {
		// TODO Auto-generated method stub
		return 0;
	}
	
	@Override
	public int c() {
		// TODO Auto-generated method stub
		return 0;
	}
	
	@Override
	public String d() {
		// TODO Auto-generated method stub
		return null;
	}
	
	@Override
	public boolean e() {
		// TODO Auto-generated method stub
		return false;
	}
	
	
}

class GoodClass1 extends Badclass{
	@Override
	public int c() {
		// TODO Auto-generated method stub
		return super.c();
	}
}

class GoodClass2 extends Badclass{
	@Override
	public void a() {
		// TODO Auto-generated method stub
		super.a();
	}
	
	@Override
	public boolean e() {
		// TODO Auto-generated method stub
		return super.e();
	}
}